<template>
  <view class="modal_wrap">
    <view class="modal">
      <view class="modal_tit">服务协议</view>
      <view class="mod_info">
        本协议为您与本小程序管理者所订立的契约，请您仔细阅读。
        <br />本协议内容包括协议正文及各类规则，所有规则为本协议不可分割的组成部分，与协议正文具有同等法律效力。如您对协议有任何疑问，可向客服咨询。您在同意本协议条款并完成注册程序后，成为本站的正式用户，您点击“同意并继续”按钮后，本协议即生效，对双方均具有约束力。
        <br />一、本小程序有权根据需要不定期的制定、修改本协议或各类规则，在本小程序平台公示并立即生效，不再另行单独通知用户。如您不同意相关变更，应当立即停止使用本小程序平台服务，您继续使用本小程序平台服务的，即表明您接受修订后的协议和规则。
        <br />二、本小程序根据实际情况调整分成比例，注册用户是经纪人的，不得恶意挖其他公会的主播损害小程序管理者一方的声誉，否则由注册用户承担相关法律责任。主播归属权属于本小程序管理者合作的公会，经纪人主要负责推荐主播和主播运营。
        <br />三、 注册用户须为具有法定的权利能力和行为能力的自然人、法人或其他组织，能够独立承担法律责任。您完成注册程序或本按照小程序平台统一的方式实际使用本平台服务时，即视为您确认自己具备主体资格，能够独立承担法律责任。若因您不具备主体资格，而导致的一切后果，由您的监护人承担。
        <br />四、 用户信息的合理使用
        <br />
        <t />1、您同意本小程序平台拥有通过邮件、短信电话等形式，向您本人或您指定的联系人发送信息的权利。
        <br />
        <t />2、您了解并同意，本小程序有权应国家司法、行政等主管部门的要求，向其提供您在本小程序平台填写的注册信息和交易记录等必要信息。
        <br />
        <t />3、您使用本小程序，需先注册方可使用。您承诺向本小程序提供的信息真实且完整。本小程序在任何时候有权验证您所提供信息的真实完整性。
        <br />
        <t />4、您使用应用程序或服务，即表示您还同意以下事项：
        <br />
        <t />
        <t />（1）您将妥善保管您的账户且不会对外泄露；
        <br />
        <t />
        <t />（2）您不会将账户转让给任何其他个人或组织；
        <br />
        <t />
        <t />（3）您不会在没有正当授权的情况下使用其他人的账户；
        <br />
        <t />
        <t />（4）您不会利用本小程序骚扰、妨碍他人或者给他人造成不便；
        <br />
        <t />
        <t />（5）您不会影响网络的正常运行；
        <br />
        <t />
        <t />（6）当我们提出合理请求时，您会配合提供身份证明 资料；
        <br />
        <t />
        <t />（7）您不会使用不兼容或者未授权的设备使用服务或应用程序；
        <br />
        <t />
        <t />（8）您将遵守自己的国家/地区以及您使用本小程序时所处国家/地区的所有法律。
        <br />
        <t />5、您接受本《用户协议》并使用本小程序，即表示您同意：对于因以下事项产生的责任或索赔，您应该赔偿给小程序管理者造成的一切损失：
        <br />
        <t />
        <t />（1）您触犯或违反本《用户协议》中的任何条款或相应的法律法规（无论此处是否提及）；
        <br />
        <t />
        <t />（2）您触犯任何第三方的任何权利；
        <br />
        <t />
        <t />（3） 您违规使用或滥用本小程序。
        <br />
        <t />6、本小程序向您提供的信息、推荐或其他服务仅用作一般参考信息。
        <br />
        <t />7、对于因使用本小程序而导致的任何损害，包括由恶意软件、病毒、信息的任何不正确或不完整导致的损害，除非此类损害是由小程序管理者方面故意或重大过失造成的，否则小程序管理者概不负责。
        <br />
        <t />8、在不损害上述内容并在强制性法律允许的范围内，本小程序管理者承担的全部责任不超过500元。
        <br />
        <t />9、在您遵守本用户协议的前提下，本小程序管理者向您授予不可转让的、有限的、非排他性的许可：
        <br />
        <t />
        <t />（1）用于查看、下载和打印本小程序的内容，并仅供非商业性的个人用途；
        <br />
        <t />
        <t />（2）用于查看您访问权限内的人和用户内容，并仅供非商业性的个人用途。
        <br />
        <t />10、您不得：
        <br />
        <t />
        <t />（1）发送垃圾邮件；
        <br />
        <t />
        <t />（2）发送或存储侵权、淫秽、威胁、诽谤等违法信息；
        <br />
        <t />
        <t />（3）发送或存储包含软件病毒、木马或其他有害的计算机代码、文件、脚本、代理或程序的资料；
        <br />
        <t />
        <t />（4）阻挠或扰乱本小程序的完整性或性能；
        <br />
        <t />
        <t />（5）尝试未经授权的访问本小程序或其他相关系统或网络；
        <br />
        <t />
        <t />（6）其他法律禁止的行为。
        <br />您确认：
        <br />本协议条款是处理双方权利义务的依据。
        <br />您承诺：
        <br />接受并遵守本协议的约定。如果您不同意本协议的约定，您应当立即停止注册程序或停止使用本小程序平台服务。`
      </view>
      <view class="btn">
        <button
          open-type="getUserInfo"
          lang="zh_CN"
          @getuserinfo="mpGetUserInfo"
          @tap="login"
          size="mini"
          v-if="show"
          type="warning"
        >授权登录</button>
        <button
          type="warning"
          size="mini"
          open-type="openSetting"
          @opensetting="reauthorize"
          v-else
        >重新授权</button>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      show: true,
      able: false,
      code: "",
      byteUserinfo: []
    };
  },
  methods: {
    // 获取到用户信息后，调用登录接口，如果被拒绝授权，就跳转到设置页面
    // 如下为微信的登录操作
    // #ifdef H5 || MP-WEIXIN
    mpGetUserInfo() {
      const that = this;
      // 先看是否已经获取过用户信息，如果存在用户信息可直接哪来请求login接口
      const userinfo = uni.getStorageSync("userinfo");
      if (uni.getStorageSync("userinfo")) {
        wx.login({
          success: function(loginRes) {
            userinfo.code = loginRes.code;
            userinfo.headimage = userinfo.avatarUrl;
            userinfo.nickname = userinfo.nickName;
            const pid = uni.getStorageSync("ppid");
            userinfo.pid = pid;
            // 优化过得代码
            that
              .$http({
                url: "/api/user/MiniProgramLogin",
                data: userinfo,
                method: "POST"
              })
              .then(res => {
                // 登录失败，提示错误信息,重新打开授权页面
                if (res.code != 1) {
                  wx.redirectTo({
                    url: "pages/authorise/index"
                  });
                  // 登陆成功
                } else {
                  // 保存登陆成功获取的token
                  wx.setStorageSync("token", res.data.userinfo.token);
                  // 保存返回的被处理过的用户信息
                  uni.setStorageSync("login", res.data.userinfo);
                  // 登陆成功 跳转到tab首页
                  wx.switchTab({
                    url: "/pages/anchor/ranklist/index"
                  });
                }
              });
          }
        });
      } else {
        // 查看是否授权
        wx.getSetting({
          success(res) {
            if (res.authSetting["scope.userInfo"]) {
              // 已经授权，可以直接调用 getUserInfo 获取头像昵称
              wx.getUserInfo({
                success: function(res) {
                  const userInfo = res.userInfo;
                  wx.setStorageSync("userinfo", res.userInfo);
                  uni.showToast({
                    title: "正在跳转中",
                    icon: "loading"
                  });
                  wx.login({
                    success: function(loginRes) {
                      that.able = true;
                      userInfo.code = loginRes.code;
                      userInfo.headimage = userInfo.avatarUrl;
                      userInfo.nickname = userInfo.nickName;
                      let pid = uni.getStorageSync("ppid");
                      userInfo.pid = pid;
                      // 优化过得代码
                      that
                        .$http({
                          url: "/api/user/MiniProgramLogin",
                          data: userInfo,
                          method: "POST"
                        })
                        .then(res => {
                          // 登录失败，提示错误信息,重新打开授权页面
                          if (res.code != 1) {
                            this.able = false;
                            wx.redirectTo({
                              url: "pages/authorise/index"
                            });
                            // 登陆成功
                          } else {
                            // 保存登陆成功获取的token
                            wx.setStorageSync("token", res.data.userinfo.token);
                            // 保存返回的被处理过的用户信息
                            uni.setStorageSync("login", res.data.userinfo);
                            // 保存用户的关系绑定状态消息
                            wx.setStorageSync(
                              "is_bind",
                              res.data.userinfo.is_bind
                            );
                            wx.setStorageSync("flag", true);
                            // 登陆成功 跳转到tab首页
                            wx.switchTab({
                              url: "/pages/anchor/ranklist/index"
                            });
                          }
                        });
                    }
                  });
                }
              });
            } else {
              that.show = false;
            }
          }
        });
      }
    },
    // 处理重新授权后的回调函数
    reauthorize(e) {
      if (e.detail.authSetting["scope.userInfo"]) {
        // // 若二次授权成功，切换对话框的显示按钮
        // wx.getUserInfo({
        //   success: res => {
        //     wx.setStorageSync("userinfo", res.userInfo);
        //   }
        // });
        this.show = true;
      }
    },
    // #endif
    // 微信小程序的操作结束

    // 如下为字节跳动小程序的操作
    // #ifdef MP-TOUTIAO
    mpGetUserInfo() {
      console.log("12313");
    },
    login() {
      console.log(this);
      let that = this;
      tt.login({
        success(res) {
          console.log(`login调用成功${res.code} ${res.anonymousCode}`);
          that.code = res.code;
          // 查看是否授权
          tt.getSetting({
            success(res) {
              if (res.authSetting["scope.userInfo"]) {
                //  已授权 直接获取用户信息
                tt.getUserInfo({
                  withCredentials: true,
                  success(res) {
                    console.log("敏感信息", res.encryptedData);
                    console.log(res.userInfo);
                    that.byteUserinfo = res.userInfo;
                    that.byteUserinfo.code = that.code;
                    that.byteUserinfo.nickname = res.userInfo.nickName;
                    that.byteUserinfo.headimage = res.userInfo.avatarUrl;
                    that.loginBy();
                  },
                  fail(res) {
                    console.log(`getUserInfo 调用失败`);
                  }
                });
              } else {
                //  申请授权 获取信息
                tt.authorize({
                  scope: "scope.userInfo",
                  success(res) {
                    // 用户同意授权用户信息
                    tt.getUserInfo({
                      withCredentials: true,
                      success(res) {
                        console.log(res.encryptedData);
                        console.log(res.userInfo);
                        that.byteUserinfo = res.userInfo;
                        that.byteUserinfo.code = that.code;
                        that.byteUserinfo.nickname = res.userInfo.nickName;
                        that.byteUserinfo.headimage = res.userInfo.avatarUrl;
                        that.loginBy();
                      },
                      fail(res) {
                        console.log(`getUserInfo 调用失败`);
                      }
                    });
                  }
                });
              }
            },
            fail(err) {
              console.log(err);
            },
            complete() {
              console.log("complete");
            }
          });
          // 登陆成功 跳转到tab首页
          // tt.switchTab({
          //   url: "/pages/anchor/index"
          // });
        },
        fail(res) {
          console.log(`login调用失败`);
        }
      });
    },
    loginBy() {
      this.$https({
        url: "/api/user/DouyinLogin",
        data: this.byteUserinfo,
        method: "POST"
      }).then(res => {
        if (res.code !== 1) {
          // 未登录 重新渲染
          tt.redirectTo({
            url: `pages/authorise/index`
          });
        } else {
          // 保存登录成功后的用户信息
          tt.setStorageSync("token", res.data.userinfo.token);
          // 保存被处理过的用户信息
          tt.setStorageSync("login", res.data.userinfo);
          // 保存是否与微信号绑定的状态信息
          tt.setStorageSync("has_wx", res.data.userinfo.has_wxopenid);
          // 跳转首页
          // 登陆成功 跳转到tab首页
          tt.switchTab({
            url: "/pages/anchor/ranklist/index"
          });
        }
      });
    }
    // #endif
  }
};
</script>

<style lang='scss' scoped>
.modal_wrap {
  height: 100%;
  width: 100%;
  /* 模态框样式 */
  .modal {
    color: #000000;
    width: 75%;
    height: 280px;
    background-color: #ffffff;
    border: 1rpx solid red;
    border-radius: 30px;
    padding: 15px;
    position: absolute;
    top: 140px;
    left: 50%;
    transform: translateX(-50%);
    .modal_tit {
      text-align: left;
      height: 40px;
      // line-height: 25px;
      color: #de794d;
      font-size: 24px;
    }
    .mod_info {
      height: 150px;
      overflow-y: scroll;
      // ios下开启惯性滚动
      -webkit-overflow-scrolling: touch;
    }
    .btn {
      margin-top: 15px;
      text-align: center;
    }
  }
  button {
    border-radius: 100px;
    background: red;
    color: #ffffff;
    font-size: 20px;
  }
  button::after {
    content: "";
    width: 0;
    height: 0;
  }
}
</style>